package request

import (
	"github.com/astaxie/beego/validation"
	"shop-common/utils"
)

type TransportRequest struct {
	TransportId      uint           `json:"transportId"`                   //运费模板id
	TransName        string         `json:"transName" binding:"required"`  //运费模板名称
	ChargeType       int            `json:"chargeType" binding:"required"` //收费方式（1 按件数,2 按重量 3 按体积）
	IsFreeFee        int            `json:"isFreeFee" binding:"required"`  // 是否包邮 1:不包邮 2:包邮
	HasFreeCondition int            `json:"hasFreeCondition"`              //是否含有包邮条件 1 | 2
	Transfees        []Transfee     `json:"transfees"`                     //运费项
	TransfeeFrees    []TransfeeFree `json:"transfeeFrees"`                 //指定条件包邮项
}

type TransfeeFree struct {
	TransfeeFreeId uint           `json:"transfeeFreeId"` //指定条件包邮项id
	FreeType       int            `json:"freeType"`       //包邮方式 （1 满x件/重量/体积包邮 2满金额包邮 3满x件/重量/体积且满金额包邮）
	Amount         float64        `json:"amount"`         //需满金额
	Piece          float64        `json:"piece"`          //包邮x件/重量/体积
	FreeCityList   []cityListItem `json:"freeCityList"`   //指定条件包邮城市项
}

type Transfee struct {
	TransfeeId      uint           `json:"transfeeId"`      //运费项id
	FirstPiece      float64        `json:"firstPiece"`      //首件数量
	FirstFee        float64        `json:"firstFee"`        //首件费用
	ContinuousPiece float64        `json:"continuousPiece"` //续件数量
	ContinuousFee   float64        `json:"continuousFee"`   //续件费用
	CityList        []cityListItem `json:"cityList"`        //指定条件运费城市项
}

type cityListItem struct {
	AreaId   uint   `json:"areaId"`   //地区id
	AreaName string `json:"areaName"` //地区名称
	Level    int    `json:"level"`    //地区上级id
	ParentId int    `json:"parentId"` //地区层级
}

func (t *TransportRequest) Valid(v *validation.Validation) {
	if t.TransName == "" {
		v.SetError("TransName", "运费模板名称不能为空")
	} else if !utils.IntIncludes([]int{1, 2, 3}, t.ChargeType) {
		v.SetError("ChargeType", "收费方式不合法")
	} else if !utils.IntIncludes([]int{1, 2}, t.IsFreeFee) {
		v.SetError("IsFreeFee", "包邮方式不合法")
	}
}
